package com.wicket.okrapp.web.contorller;

import com.wicket.okrapp.biz.service.FinanceService;
import com.wicket.okrapp.biz.service.dto.req.*;
import com.wicket.okrapp.biz.service.dto.res.*;
import com.wicket.okrapp.common.ro.OkrResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@RestController
@RequestMapping("/app/finance/")
public class FinanceController {

  @Autowired
  FinanceService financeService;
/**
   * D3-执行账单内容对方LOGO和名称处理(公共)
   */
    @PostMapping("implementLogoAndNameOfBillContentCom")
    public OkrResult<ImplementLogoAndNameOfBillContentComRespDto> implementLogoAndNameOfBillContentCom(@RequestBody @Validated ImplementLogoAndNameOfBillContentComReqDto reqDTO){
    return OkrResult.success(financeService.implementLogoAndNameOfBillContentCom(reqDTO));
    }
/**
   * D3-查询资金到账账户标识(公共)
   */
    @PostMapping("queryFinanceReceiptsAccountDetailCom")
    public OkrResult<QueryFinanceReceiptsAccountDetailComRespDto> queryFinanceReceiptsAccountDetailCom(@RequestBody @Validated QueryFinanceReceiptsAccountDetailComReqDto reqDTO){
    return OkrResult.success(financeService.queryFinanceReceiptsAccountDetailCom(reqDTO));
    }
/**
   * D3-查询账户主体列表(公共)
   */
    @PostMapping("queryFinanceAccountSubjectListCom")
    public OkrResult<QueryFinanceAccountSubjectListComRespDto> queryFinanceAccountSubjectListCom(@RequestBody @Validated QueryFinanceAccountSubjectListComReqDto reqDTO){
    return OkrResult.success(financeService.queryFinanceAccountSubjectListCom(reqDTO));
    }
/**
   * D3-更新祖先账单账户(公共)
   */
    @PostMapping("refreshParentBillAndAccountCom")
    public OkrResult<RefreshParentBillAndAccountComRespDto> refreshParentBillAndAccountCom(@RequestBody @Validated RefreshParentBillAndAccountComReqDto reqDTO){
    return OkrResult.success(financeService.refreshParentBillAndAccountCom(reqDTO));
    }
/**
   * D3-查询上级账户详情(公共)
   */
    @PostMapping("querySuperiorsFinanceAccountDetailCom")
    public OkrResult<QuerySuperiorsFinanceAccountDetailComRespDto> querySuperiorsFinanceAccountDetailCom(@RequestBody @Validated QuerySuperiorsFinanceAccountDetailComReqDto reqDTO){
    return OkrResult.success(financeService.querySuperiorsFinanceAccountDetailCom(reqDTO));
    }
/**
   * D3-执行资金到账账户处理(公共)
   */
    @PostMapping("implementFinanceReceiptsAccountCom")
    public OkrResult<ImplementFinanceReceiptsAccountComRespDto> implementFinanceReceiptsAccountCom(@RequestBody @Validated ImplementFinanceReceiptsAccountComReqDto reqDTO){
    return OkrResult.success(financeService.implementFinanceReceiptsAccountCom(reqDTO));
    }
/**
   * D3-执行提交预算条件分析(公共)
   */
    @PostMapping("implementSubmitBudgetAnalyzeCom")
    public OkrResult<ImplementSubmitBudgetAnalyzeComRespDto> implementSubmitBudgetAnalyzeCom(@RequestBody @Validated ImplementSubmitBudgetAnalyzeComReqDto reqDTO){
    return OkrResult.success(financeService.implementSubmitBudgetAnalyzeCom(reqDTO));
    }
/**
   * D3-审核并计算预算标准数据(公共)
   */
    @PostMapping("implementExamineCalcBudgetDataCom")
    public OkrResult<ImplementExamineCalcBudgetDataComRespDto> implementExamineCalcBudgetDataCom(@RequestBody @Validated ImplementExamineCalcBudgetDataComReqDto reqDTO){
    return OkrResult.success(financeService.implementExamineCalcBudgetDataCom(reqDTO));
    }
/**
   * D3-执行预算汇报元素分析(公共)
   */
    @PostMapping("implementBudgetReportElementAnalyzeCom")
    public OkrResult<ImplementBudgetReportElementAnalyzeComRespDto> implementBudgetReportElementAnalyzeCom(@RequestBody @Validated ImplementBudgetReportElementAnalyzeComReqDto reqDTO){
    return OkrResult.success(financeService.implementBudgetReportElementAnalyzeCom(reqDTO));
    }
/**
   * D3-分析目标内容的预算汇报层级(公共)
   */
    @PostMapping("implementAnalyzeTargetContentBudgetReportlevelCom")
    public OkrResult<ImplementAnalyzeTargetContentBudgetReportlevelComRespDto> implementAnalyzeTargetContentBudgetReportlevelCom(@RequestBody @Validated ImplementAnalyzeTargetContentBudgetReportlevelComReqDto reqDTO){
    return OkrResult.success(financeService.implementAnalyzeTargetContentBudgetReportlevelCom(reqDTO));
    }
/**
   * D3-判断预算汇报是否可以提交(公共)
   */
    @PostMapping("judgeBudgetReportCanBeSubmitCom")
    public OkrResult<JudgeBudgetReportCanBeSubmitComRespDto> judgeBudgetReportCanBeSubmitCom(@RequestBody @Validated JudgeBudgetReportCanBeSubmitComReqDto reqDTO){
    return OkrResult.success(financeService.judgeBudgetReportCanBeSubmitCom(reqDTO));
    }
/**
   * D3-查询可用财务科目列表(公共)
   */
    @PostMapping("queryUsableAccountSubjectListCom")
    public OkrResult<QueryUsableAccountSubjectListComRespDto> queryUsableAccountSubjectListCom(@RequestBody @Validated QueryUsableAccountSubjectListComReqDto reqDTO){
    return OkrResult.success(financeService.queryUsableAccountSubjectListCom(reqDTO));
    }
/**
   * D3-执行目标预算设置(公共)
   */
    @PostMapping("implementTargetBudgetSetCom")
    public OkrResult<ImplementTargetBudgetSetComRespDto> implementTargetBudgetSetCom(@RequestBody @Validated ImplementTargetBudgetSetComReqDto reqDTO){
    return OkrResult.success(financeService.implementTargetBudgetSetCom(reqDTO));
    }
/**
   * D3查询目标内容父周期预算设置详情
   */
    @PostMapping("queryTargetParentCycleBudgetSetDetail")
    public OkrResult<QueryTargetParentCycleBudgetSetDetailRespDto> queryTargetParentCycleBudgetSetDetail(@RequestBody @Validated QueryTargetParentCycleBudgetSetDetailReqDto reqDTO){
    return OkrResult.success(financeService.queryTargetParentCycleBudgetSetDetail(reqDTO));
    }
/**
   * D3查询目标周期及来源预算设置列表
   */
    @PostMapping("queryTargetCycleAndSourceBudgetSetList")
    public OkrResult<QueryTargetCycleAndSourceBudgetSetListRespDto> queryTargetCycleAndSourceBudgetSetList(@RequestBody @Validated QueryTargetCycleAndSourceBudgetSetListReqDto reqDTO){
    return OkrResult.success(financeService.queryTargetCycleAndSourceBudgetSetList(reqDTO));
    }
/**
   * D3查询目标周期预算设置资金来源列表
   */
    @PostMapping("queryTargetCycleBudgetSetSourceList")
    public OkrResult<QueryTargetCycleBudgetSetSourceListRespDto> queryTargetCycleBudgetSetSourceList(@RequestBody @Validated QueryTargetCycleBudgetSetSourceListReqDto reqDTO){
    return OkrResult.success(financeService.queryTargetCycleBudgetSetSourceList(reqDTO));
    }
/**
   * D3执行全内容统计资金来源及账户(公共)
   */
    @PostMapping("implementAllContentCountFundingSourcesAccountsCom")
    public OkrResult<ImplementAllContentCountFundingSourcesAccountsComRespDto> implementAllContentCountFundingSourcesAccountsCom(@RequestBody @Validated ImplementAllContentCountFundingSourcesAccountsComReqDto reqDTO){
    return OkrResult.success(financeService.implementAllContentCountFundingSourcesAccountsCom(reqDTO));
    }
/**
   * D3-执行当前目标内容财务数据准备(公共)
   */
    @PostMapping("implementPreCurTargetContFinDataCom")
    public OkrResult<ImplementPreCurTargetContFinDataComRespDto> implementPreCurTargetContFinDataCom(@RequestBody @Validated ImplementPreCurTargetContFinDataComReqDto reqDTO){
    return OkrResult.success(financeService.implementPreCurTargetContFinDataCom(reqDTO));
    }
/**
   * D3执行分析财务账户关键入参(公共)
   */
    @PostMapping("implementAnalyzeInputsFinancialAccountsCom")
    public OkrResult<ImplementAnalyzeInputsFinancialAccountsComRespDto> implementAnalyzeInputsFinancialAccountsCom(@RequestBody @Validated ImplementAnalyzeInputsFinancialAccountsComReqDto reqDTO){
    return OkrResult.success(financeService.implementAnalyzeInputsFinancialAccountsCom(reqDTO));
    }
/**
   * D3-分析预算账户归属主体标识(公共)
   */
    @PostMapping("analysisBudgetAccountContentCodeCom")
    public OkrResult<AnalysisBudgetAccountContentCodeComRespDto> analysisBudgetAccountContentCodeCom(@RequestBody @Validated AnalysisBudgetAccountContentCodeComReqDto reqDTO){
    return OkrResult.success(financeService.analysisBudgetAccountContentCodeCom(reqDTO));
    }
/**
   * D3执行开启或关闭目标预算
   */
    @PostMapping("implementOpenOrCloseTargetBudget")
    public OkrResult<ImplementOpenOrCloseTargetBudgetRespDto> implementOpenOrCloseTargetBudget(@RequestBody @Validated ImplementOpenOrCloseTargetBudgetReqDto reqDTO){
    return OkrResult.success(financeService.implementOpenOrCloseTargetBudget(reqDTO));
    }
/**
   * D3查询目标内容预算子周期列表(公共)
   */
    @PostMapping("queryTargetContentBudgetSubCycleListCom")
    public OkrResult<QueryTargetContentBudgetSubCycleListComRespDto> queryTargetContentBudgetSubCycleListCom(@RequestBody @Validated QueryTargetContentBudgetSubCycleListComReqDto reqDTO){
    return OkrResult.success(financeService.queryTargetContentBudgetSubCycleListCom(reqDTO));
    }
/**
   * D3查询目标内容预算设置状态详情
   */
    @PostMapping("queryTargetContentBudgetStateDetail")
    public OkrResult<QueryTargetContentBudgetStateDetailRespDto> queryTargetContentBudgetStateDetail(@RequestBody @Validated QueryTargetContentBudgetStateDetailReqDto reqDTO){
    return OkrResult.success(financeService.queryTargetContentBudgetStateDetail(reqDTO));
    }
/**
   * D3查询目标内容预算设置状态详情(公共)
   */
    @PostMapping("queryTargetContentBudgetStateDetailCom")
    public OkrResult<QueryTargetContentBudgetStateDetailComRespDto> queryTargetContentBudgetStateDetailCom(@RequestBody @Validated QueryTargetContentBudgetStateDetailComReqDto reqDTO){
    return OkrResult.success(financeService.queryTargetContentBudgetStateDetailCom(reqDTO));
    }
/**
   * D3执行生成账单业务故事及科目信息(公共)
   */
    @PostMapping("implementGenerateBillBusinessStoriesAndAccountInfoCom")
    public OkrResult<ImplementGenerateBillBusinessStoriesAndAccountInfoComRespDto> implementGenerateBillBusinessStoriesAndAccountInfoCom(@RequestBody @Validated ImplementGenerateBillBusinessStoriesAndAccountInfoComReqDto reqDTO){
    return OkrResult.success(financeService.implementGenerateBillBusinessStoriesAndAccountInfoCom(reqDTO));
    }
/**
   * D3执行财务数据处理判断(公共)
   */
    @PostMapping("implementFinancialDataProcessingCom")
    public OkrResult<ImplementFinancialDataProcessingComRespDto> implementFinancialDataProcessingCom(@RequestBody @Validated ImplementFinancialDataProcessingComReqDto reqDTO){
    return OkrResult.success(financeService.implementFinancialDataProcessingCom(reqDTO));
    }
/**
   * D3执行刷新全模板财务数据(公共)
   */
    @PostMapping("implementRefreshFullTemplateFinancialDataCom")
    public OkrResult<ImplementRefreshFullTemplateFinancialDataComRespDto> implementRefreshFullTemplateFinancialDataCom(@RequestBody @Validated ImplementRefreshFullTemplateFinancialDataComReqDto reqDTO){
    return OkrResult.success(financeService.implementRefreshFullTemplateFinancialDataCom(reqDTO));
    }
/**
   * D3-提交汇报准备配置入参数据(公共)
   */
    @PostMapping("commitBudgetReportDataPreCom")
    public OkrResult<CommitBudgetReportDataPreComRespDto> commitBudgetReportDataPreCom(@RequestBody @Validated CommitBudgetReportDataPreComReqDto reqDTO){
    return OkrResult.success(financeService.commitBudgetReportDataPreCom(reqDTO));
    }
/**
   * D3分析准备财务入参信息(公共)
   */
    @PostMapping("analysisPreCurTargetContFinDataCom")
    public OkrResult<AnalysisPreCurTargetContFinDataComRespDto> analysisPreCurTargetContFinDataCom(@RequestBody @Validated AnalysisPreCurTargetContFinDataComReqDto reqDTO){
    return OkrResult.success(financeService.analysisPreCurTargetContFinDataCom(reqDTO));
    }
}
